// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import "oaidl.idl";
import "ocidl.idl";

[
  object,
  uuid(b59b96da-83cb-40ee-9b91-c377400fc3e3),
  nonextensible,
  helpstring("IRdpDesktopSessionEventHandler Interface"),
  pointer_default(unique)
]
interface IRdpDesktopSessionEventHandler : IUnknown {
  [ id(1), helpstring("Notifies that an RDP connection has been established "
                      "successfully.") ]
  HRESULT OnRdpConnected();

  [ id(2), helpstring("Notifies the delegate that the RDP connection has been "
                      "closed.") ]
  HRESULT OnRdpClosed();
};

[
  object,
  uuid(6a7699f0-ee43-43e7-aa30-a6738f9bd470),
  nonextensible,
  helpstring("IRdpDesktopSession Interface"),
  pointer_default(unique)
]
interface IRdpDesktopSession : IUnknown {
  [ id(1), helpstring("Initiates a loopback RDP connection to spawn a new "
                      "Windows session. |width| and |height| specify the "
                      "initial screen resolution, they must be scaled to |dpi|."
                      " |terminal_id| specifies a unique value to be used to "
                      "identify this connection. |port_number| specifies the "
                      "RDP port number to use.") ]
  HRESULT Connect([in] long width, [in] long height, [in] long dpi_x,
                  [in] long dpi_y, [in] BSTR terminal_id,
                  [in] DWORD port_number,
                  [in] IRdpDesktopSessionEventHandler* event_handler);

  [ id(2), helpstring("Shuts down the connection created by Connect().") ]
  HRESULT Disconnect();

  [ id(3), helpstring("Changes the screen resolution.") ]
  HRESULT ChangeResolution([in] long width, [in] long height, [in] long dpi_x,
                           [in] long dpi_y);

  [ id(4), helpstring("Sends Secure Attention Sequence to the session.") ]
  HRESULT InjectSas();
};

[
  uuid(b6396c45-b0cc-456b-9f49-f12964ee6df4),
  version(1.0),
  helpstring("Chromoting 1.0 Type Library")
]
library ChromotingLib {
  importlib("stdole2.tlb");

  [
    uuid(PLACEHOLDER-GUID-6741fd0a-6a8a-5838-a35e-8088697e2088),
    helpstring("RdpDesktopSession Class")
  ]
  coclass RdpDesktopSession {
    [default] interface IRdpDesktopSession;
  };
};
